#include<iostream>
#include<unordered_map>
#include<string>
#include<algorithm>
#include<vector>

/*给你一个字符串数组，请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。
字母异位词 是由重新排列源单词的所有字母得到的一个新单词。*/

class Solution
{
    public:
    std::vector<std::vector<std::string>> groupAnagrams(const std::vector<string>& strs)
    {
        std::unordered_map<string,std::vector<string>>temp;
        for(const auto& s:strs)
        {
            std::string str = s;
            std::sort(str.begin(),str.end());
            temp[str].push_back(s);
        }
        std::vector<std::vector<std::string>>result;
        for(const auto& s:temp)
        {
            result.push_back(s.second);
        }
        return result;
    }
};